// cloudfunctions/updateQuestion/index.js
'use strict';
const db = uniCloud.database();

exports.main = async (event, context) => {
  try {
    
    console.log(event)
    // 基础校验
    if (!event.id) throw { code: 4001, msg: '缺少题目ID参数' };
    if (!event.questionData) throw { code: 4002, msg: '缺少题目数据' };
    
 
    // 数据预处理
    const questionData = event.questionData || {};


    // 执行数据库更新
    const result = await db.collection('questions')
      .doc(event.id)
      .update({
        ...questionData,
      });

    // 处理更新结果
    if (result.updated === 1) {
      console.log('[更新成功]', event.id);
      return { code: 0, msg: '更新成功' };
    }
    
    throw { code: 404, msg: '未找到对应题目' };

  } catch (error) {
    console.error('[云函数错误]', {
      code: error.code || 500,
      message: error.message,
      stack: error.stack
    });
    
    return {
      code: error.code || 500,
      msg: error.msg || '服务器内部错误',
    };
  }
};

// 数据处理方法
function processQuestionData(questionData) {
  // 文本处理
  const text = String(questionData.text || '').trim().substring(0, 200);
  
  // 类型处理
  const type = ['single', 'judge'].includes(questionData.type) 
    ? questionData.type 
    : 'single';

  // 选项处理
  let options = [];
  if (type === 'judge') {
    options = ['正确', '错误'];
  } else {
    options = (Array.isArray(questionData.options) ? questionData.options : [])
      .map(opt => String(opt).trim().substring(0, 50))
      .filter(opt => opt !== '');
  }

  // 答案处理
  const answer = String(questionData.answer || '').trim().substring(0, 50);

  return {
    text,
    type,
    options,
    answer,
    status: Boolean(questionData.status)
  };
}

// 数据验证方法
function validateQuestionData(data) {
  const requiredFields = ['text', 'type', 'options', 'answer', 'status'];
  
  // 字段存在性检查
  requiredFields.forEach(field => {
    if (typeof data[field] === 'undefined') {
      throw { code: 4004, msg: `缺少必要字段：${field}` };
    }
  });

  // 题目内容验证
  if (data.text.length < 5) {
    throw { code: 4101, msg: '题目内容至少需要5个字符' };
  }

  // 选项验证
  if (data.type === 'single') {
    if (data.options.length < 2) {
      throw { code: 4102, msg: '单选题至少需要2个有效选项' };
    }
    if (data.options.length > 4) {
      throw { code: 4103, msg: '单选题最多支持4个选项' };
    }
  }

  // 答案有效性验证
  if (!data.options.includes(data.answer)) {
    throw { 
      code: 4104, 
      msg: `答案不存在于选项中 (答案: ${data.answer}, 选项: ${data.options.join(', ')})`
    };
  }
}